#include "./Timer.h"

namespace Timer
{
    void Timer::restart(Timestamp now)
    {
        if (this->interval_.count() <= 0) // 不重复定时器
        {
            // 约定默认/开始时刻epoch（1970-01-01 00:00:00 UTC）为无效超时时间
            this->timeout_ = Timestamp{};
        }
        else // 重复定时器
        {
            // 注意：
            // std::chrono::system_clock::time_point的精度是std::chrono::system_clock::duration
            // std::chrono::duration<double>精度
            // 精度类型不一样不能直接赋值
            this->timeout_ = std::chrono::time_point_cast<std::chrono::system_clock::duration>(
                now + this->interval_); // 当前时间 + 触发间隔 = 下次超时时间
        }
    }
} // namespace Timer